package 注解;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/*
    自定义注解
        定义新的 Annotation类型使用 @interface关键字
        自定义注解自动继承了java.lang.annotation.Annotation接口
        Annotation的成员变量在 Annotation定义中以"无参数方法(看起来像方法,其实是属性)"的形式来声明,其
          方法名和返回值定义了该成员的名字和类型,称为配置参数,类型只能是八种基本
          数据类型、String类型、Class类型、enum类型、Annotation类型以上所有类型的数组
        可以在定义 Annotation的成员变量时为其指定初始值,指定成员变量的初始值可使用 default关键字
        如果只有一个参数成员,建议使用参数名为value
          如果定义的注解含有配置参数,那么使用时必须指定参数值,除非它有默认值,格式是"参数名 = 参数值",
          如果只有一个参数成员,且名称为value,可以省略"value="
        没有成员定义的 Annotation称为标记,包含成员变量的 Annotation称为元数据 Annotation
        自定义注解必须配上注解的信息处理流程(使用反射)才有意义
 */
@Retention(RetentionPolicy.RUNTIME)
//@Target(ElementType.METHOD)
public @interface MyAnnotation {

    String value() default "world"; //指定成员变量的初始值可使用 default关键字

}
